#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
int main()
{
  for(int i = 0; i < 200; i++)
  {
    printf("%d: %s\n",i,strerror(i));

  }
  return 0;
}


//int g_val = 100;
//int g_unval;
//int main()
//{
//    pid_t id = fork();
//    if (id == 0)
//    {
//        int cnt = 0;
//        //子进程
//        while (1)
//        {
//            printf("child, pid: %d, ppid: %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
//            sleep(1);
//            cnt++;
//            if (cnt == 5)
//            {
//                g_val = 200;
//                printf("child change g_val: 100->200\n");
//            }
//        }
//    }
//    else
//    {
//        while (1)
//        {
//            printf("father, pid: %d, ppid: %d, g_val: %d, &g_val: %p\n", getpid(), getppid(), g_val, &g_val);
//            sleep(1);
//        }
//
//    }
//    return 0;
//}


//int g_val = 100;
//int g_unval;
//int main(int argc, char *argv[], char *env[])
//{
//    printf("code addr: %p\n", main);
//    printf("init data addr: %p\n", &g_val);
//    printf("uninit data addr: %p\n", &g_unval);
//
//    char *heap = (char*)malloc(20);
//    char *heap1 = (char*)malloc(20);
//    char *heap2 = (char*)malloc(20);
//    char *heap3 = (char*)malloc(20);
//    static int c;
//    printf("heap addr: %p\n", heap);
//    printf("heap1 addr: %p\n", heap1);
//    printf("heap2 addr: %p\n", heap2);
//    printf("heap3 addr: %p\n", heap3);
//
//    printf("stack addr: %p\n", &heap);
//    printf("stack addr: %p\n", &heap1);
//    printf("stack addr: %p\n", &heap2);
//    printf("stack addr: %p\n", &heap3);
//    printf("c addr: %p, c: %d\n", &c, c);
//
//    for(int i = 0; argv[i]; i++)
//    {
//        printf("argv[%d]=%p\n", i, argv[i]); 
//    }
//    for(int i = 0; env[i]; i++)
//    {
//        printf("env[%d]=%p\n", i, env[i]);
//    }
//
//    return 0;
//}
